package com.enjoyor.soa.traffic.api.service.dubbo.bigdata;

import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

import java.util.Date;
import java.util.List;
public interface DubboODRegionalAnalysisService {


        //********************************去向统计********************************

        /**
         * 地图框选
         *
         * @param startDay
         * @param endDay
         * @param pointIds 框选区域点位列表，起点 List<OdAreaPoint>
         */
        ResultPojo whereaboutsMapFrameSelection(String token,Date startDay, Date endDay, List<String> pointIds);

        /**
         * 获得去向分析中累计次数和平均时间
         *
         * @param startDay
         * @param endDay
         * @param pointIds 框选区域点位列表，起点
         * @return OdAreaPoint
         */
        ResultPojo departCumulativeFreqAndAvgTime(String token,Date startDay, Date endDay, List<String> pointIds);

        /**
         * 卡口到达次数查看
         *
         * @param startDay
         * @param endDay
         * @param pointId  鼠标选择的单个点位，终点
         * @return OdAreaPoint
         */
        ResultPojo whereaboutsnNumberOfArrivalTimes(String token,Date startDay, Date endDay, String pointId, List<String> pointIds);

        /**
         * 去向分布情况,top8查询
         *
         * @param startDay
         * @param endDay
         * @param pointIds 框选区域点位列表，起点
         * @return List<OdAreaPoint>
         */
        ResultPojo whereaboutsDirectionDistribution(String token,Date startDay, Date endDay, List<String> pointIds);

        /**
         * 框选区域的变化趋势   时间粒度 小时
         *
         * @param startDay
         * @param endDay
         * @param pointIds 框选区域点位列表，起点
         * @return List<DepartOrArriveTrend>
         */
        ResultPojo whereaboutsTrendOfChangeByHour(String token,Date startDay, Date endDay, List<String> pointIds);

        /**
         * 框选区域的变化趋势 时间粒度 天
         *
         * @param startDay
         * @param endDay
         * @param pointIds 框选区域点位列表，起点
         * @return List<DepartOrArriveTrend>
         */
        ResultPojo whereaboutsTrendOfChangeByDay(String token,Date startDay, Date endDay, List<String> pointIds);

        /**
         * 框选区域的变化趋势 时间粒度 月
         *
         * @param startDay
         * @param endDay
         * @param pointIds 框选区域点位列表，起点
         * @return List<DepartOrArriveTrend>
         */
        ResultPojo whereaboutsTrendOfChangeByMonth(String token,Date startDay, Date endDay, List<String> pointIds);

        //**********************************来源统计***********************************

        /**
         * 地图框选
         *
         * @param startDay
         * @param endDay
         * @param pointIds 框选区域点位列表，终点
         *    List<OdAreaPoint>
         */
        ResultPojo sourceMapFrameSelection(String token,Date startDay, Date endDay, List<String> pointIds);

        /**
         * 获得来源分析中累计次数和平均时间
         *
         * @param startDay
         * @param endDay
         * @param pointIds 框选区域点位列表，起点
         * @return OdAreaPoint
         */
        ResultPojo arriveCumulativeFreqAndAvgTime(String token,Date startDay, Date endDay, List<String> pointIds);

        /**
         * 卡口到达次数查看
         *
         * @param startDay
         * @param endDay
         * @param pointId  鼠标选择的单个点位，起点
         * @return OdAreaPoint
         */
        ResultPojo sourceNumberOfArrivalTimes(String token,Date startDay, Date endDay, String pointId, List<String> pointIds);

        /**
         * 去向分布情况,top8查询
         *
         * @param startDay
         * @param endDay
         * @param pointIds 框选区域点位列表，终点
         * @return List<OdAreaPoint>
         */
        ResultPojo sourceDirectionDistribution(String token,Date startDay, Date endDay, List<String> pointIds);

        /**
         * 框选区域的变化趋势   时间粒度  小时
         *
         * @param startDay
         * @param endDay
         * @param pointIds 框选区域点位列表，终点
         * @return List<DepartOrArriveTrend>
         */
        ResultPojo sourceTrendOfChangeByHour(String token,Date startDay, Date endDay, List<String> pointIds);

        /**
         * 框选区域的变化趋势  时间粒度 天
         *
         * @param startDay
         * @param endDay
         * @param pointIds 框选区域点位列表，终点
         * @return List<DepartOrArriveTrend>
         */
        ResultPojo sourceTrendOfChangeByDay(String token,Date startDay, Date endDay, List<String> pointIds);

        /**
         * 框选区域的变化趋势  时间粒度 月
         *
         * @param startDay
         * @param endDay
         * @param pointIds 框选区域点位列表，终点
         * @return List<DepartOrArriveTrend>
         */
        ResultPojo sourceTrendOfChangeByMonth(String token,Date startDay, Date endDay, List<String> pointIds);


}
